package leetcode;


/***
 * 题目：合并两个有序数组
 * 链接：https://leetcode.cn/problems/merge-sorted-array/description/
 */
public class MergeArray {
    public static void main(String[] args) {
        int[] nums1 = {1,2,3,0,0,0};
        int[] nums2 = {2,5,6};
        int m = 3;
        int n = 3;
//        int[] nums1 = {0};
//        int[] nums2 = {1};
//        int[] nums1 = {2,0};
//        int[] nums2 = {1};
//        int m = 1;
//        int n = 1;
        merge(nums1, m, nums2, n);
        for (int i = 0; i < nums1.length; i++) {
            System.out.print(nums1[i]);
        }
    }
    public static void merge(int[] nums1, int m, int[] nums2, int n) {
        int i=m-1;
        int j = n-1;
        int k = m + n - 1;
        while(i>=0 && j>=0) {
            if (nums1[i] <= nums2[j]) {
                nums1[k] = nums2[j];
                k--;
                j--;
            }else{
                nums1[k] = nums1[i];
                k--;
                i--;
            }
        }
        // 肯定有剩余，比较ijmn大小
        while (i >= 0) {
            // nums1剩余
            nums1[k] = nums1[i];
            k--;
            i--;
        }
        while (j >= 0) {
            // nums2剩余
            nums1[k] = nums2[j];
            k--;
            j--;
        }

    }
}
